//
// Created by Jisam on 2024年11月12日23:36:36
// Solution of  P4158 [SCOI2009] 粉刷匠
#include <bits/stdc++.h>

#define  int long long
#define  endl "\n"
#define  all(x) (x).begin(),(x).end()
#define  pb push_back
using namespace std;

//  定义一个 f [i][j] 的数组来表示前 i 条木板粉刷 j 次的情况下能正确粉刷的最大格子数
//  定义一个 g [i][j][k] 来表示第 i 条木板上粉刷 j 次涂了前 k 个格子的情况下能正确粉刷的最大格子数
//  用 sum 数组来记录蓝色格子数 某个区间的格子数减去蓝色格子数就是粉色格子数（用前缀和来记录）
int  f[55][2505];
int  g[55][2505][55];
int  sum[55][2505];

char s[150];

signed main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    int n ,m ,t;
    cin >> n >> m >> t;
    for(int i = 1; i <=n ; i  ++){
        cin >> s;
        sum[i][0] = 0;
        for(int j = 1; j <= m; j ++){
            if(s[j - 1] != '1'){
                sum[i][j] = sum[i][j - 1] + 1;
            }else{
                sum[i][j] = sum[i][j - 1];
            }
        }
    }
    for(int i = 1;i <= n ; i ++){
        for(int j = 1; j <= m ; j ++){
            for(int k = 1; k <= m; k ++){
                for(int q = j - 1; q < k ; q ++){
                    g[i][j][k] = max(g[i][j][k],g[i][j - 1][q] + max(sum[i][k] - sum[i][q],k - q - sum[i][k] + sum[i][q]));
                }
            }
        }
    }
    for(int i = 1; i <= n ; i ++){
        for(int j = 1; j <= t ; j ++){
            for(int k = 1; k <= min(n,m) ; k ++){
                f[i][j] = max(f[i][j],f[i - 1][j - k] + g[i][k][m]);
            }
        }
    }
    int ans  = 0;
    for(int i = 1; i <= n ; i ++){
        ans = max(ans,f[n][i]);
    }
    cout << ans;
    return 0;
}